package com.atguigu05.method_more._01overload.exer._04recursion.exer1;

/**
 * ClassName: test
 * Description:
 * 练习1：
 * 已知一个数列：f(20) = 1,f(21) = 4,f(n+2) = 2*f(n+1)+f(n),
 * 其中n是大于0的整数，求f(10)的值。
 * 练习2：
 * 已知有一个数列：f(0) = 1,f(1) = 4,
 * f(n+2)=2*f(n+1) + f(n),其中n是大于0的整数，求f(10)的值。
 *
 * @Author liu
 * @Create 2024/8/22 15:28
 * @Version 1.0
 */

public class test {
    public static void main(String[] args) {
        test p1 = new test();
       int nn = p1.f(10);
       int mm = p1.f1(10);
        System.out.println(nn);
        System.out.println(mm);


    }

    //    练习1：
//    已知一个数列：f(20) = 1,f(21) = 4,f(n+2) = 2*f(n+1)+f(n),
//    其中n是大于0的整数，求f(10)的值。
    public int f(int n) {
        //提示数大
        if (n == 20) {
            return 1;
        } else if (n == 21) {
            return 4;
        } else {
            return f(n + 2) - 2 * f(n + 1);
        }


    }


    //    练习2：
//    已知有一个数列：f(0) = 1,f(1) = 4,
//    f(n+2)=2*f(n+1) + f(n),其中n是大于0的整数，求f(10)的值。
    public int f1(int n) {
        //提示数小
        if (n == 0) {
            return 1;
        } else if (n == 1) {
            return 4;
        } else {
            return 2 * f(n - 1) + f(n -2);
        }


    }
}